package Velha;

import java.awt.Dimension;
import java.awt.GridLayout;
import javax.swing.*;
/**
 *
 * @author NootFer
 */
public class jogo extends javax.swing.JPanel {
    public jogador jogador1;
    public jogador jogador2;
    public tabuleiro tabuleiro;
    
    private javax.swing.JFrame jFrame1;
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton3;
    private javax.swing.JButton jButton4;
    private javax.swing.JButton jButton5;
    private javax.swing.JButton jButton6;
    private javax.swing.JButton jButton7;
    private javax.swing.JButton jButton8;
    private javax.swing.JButton jButton9;
    
    public jogo(){
        inicializaInterface();
        jogador1 = new jogador("Jogador Número 1","X");
        jogador2 = new jogador("Jogador Número 2","O");
        tabuleiro = new tabuleiro(jogador1,jogador2);
    }
    
    public jogador verQuemJoga(){
        if( this.tabuleiro.getNumeroJogadas() %2 == 0 )return this.jogador2;
        else return this.jogador1;
    }
    
    public String fazerJogada(int i, int j){
        if( !this.tabuleiro.ehPossivelNovaJogada() ){
            this.tabuleiro.setResultado("Deu velha! Empate.");
            JOptionPane.showMessageDialog(null, "Deu velha! Empate.", "alert", JOptionPane.ERROR_MESSAGE);
            return null;
        }
        if(this.tabuleiro.getMatrizTabuleiro(i,j) != null){
            JOptionPane.showMessageDialog(null, "Já jogaram aqui moço!", "alert", JOptionPane.ERROR_MESSAGE);
            return null;
        }
        jogador jogador = this.verQuemJoga();
        if( this.tabuleiro.getResultado() != null )    JOptionPane.showMessageDialog(null, "Este jogo já acabou amigo!\n"+this.tabuleiro.getResultado(), "alert", JOptionPane.ERROR_MESSAGE);  
        this.tabuleiro.setMatrizTabuleiro(i,j,""+jogador);
        if( this.tabuleiro.procuraAlinhamento(""+jogador) ){
            this.tabuleiro.setResultado("O jogador "+jogador+" venceu!");
            JOptionPane.showMessageDialog(null,"Parabéns "+jogador+"! Grande vitória!", "alert", JOptionPane.ERROR_MESSAGE);
        }
        this.tabuleiro.addJogada();
        return jogador.getSimbolo();
    }
      
    private void inicializaInterface() {
        jFrame1 = new javax.swing.JFrame("Super Jogo da Velha 3000");
        
        jButton1 = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();
        jButton3 = new javax.swing.JButton();
        jButton4 = new javax.swing.JButton();
        jButton5 = new javax.swing.JButton();
        jButton6 = new javax.swing.JButton();
        jButton7 = new javax.swing.JButton();
        jButton8 = new javax.swing.JButton();
        jButton9 = new javax.swing.JButton();
        
        jFrame1.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        
        jButton1.setFont(new java.awt.Font("Tahoma", 1, 36));
        jButton2.setFont(new java.awt.Font("Tahoma", 1, 36));
        jButton3.setFont(new java.awt.Font("Tahoma", 1, 36));
        jButton4.setFont(new java.awt.Font("Tahoma", 1, 36));
        jButton5.setFont(new java.awt.Font("Tahoma", 1, 36));
        jButton6.setFont(new java.awt.Font("Tahoma", 1, 36));
        jButton7.setFont(new java.awt.Font("Tahoma", 1, 36));
        jButton8.setFont(new java.awt.Font("Tahoma", 1, 36));
        jButton9.setFont(new java.awt.Font("Tahoma", 1, 36));
        
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            @Override
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                String simbolojogador;
                simbolojogador = fazerJogada(0,0);
                if( simbolojogador == null )return;
                jButton1.setText(simbolojogador);
            }
        });

        jButton2.addActionListener(new java.awt.event.ActionListener() {
            @Override
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                String simbolojogador;
                simbolojogador = fazerJogada(0,1);
                if( simbolojogador == null )return;
                jButton2.setText(simbolojogador);
            }
        });

        jButton3.addActionListener(new java.awt.event.ActionListener() {
            @Override
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                String simbolojogador;
                simbolojogador = fazerJogada(0,2);
                if( simbolojogador == null )return;
                jButton3.setText(simbolojogador);
            }
        });

        jButton4.addActionListener(new java.awt.event.ActionListener() {
            @Override
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                String simbolojogador;
                simbolojogador = fazerJogada(1,0);
                if( simbolojogador == null )return;
                jButton4.setText(simbolojogador);
            }
        });

        jButton5.addActionListener(new java.awt.event.ActionListener() {
            @Override
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                String simbolojogador;
                simbolojogador = fazerJogada(1,1);
                if( simbolojogador == null )return;
                jButton5.setText(simbolojogador);
            }
        });

        jButton6.addActionListener(new java.awt.event.ActionListener() {
            @Override
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                String simbolojogador;
                simbolojogador = fazerJogada(1,2);
                if( simbolojogador == null )return;
                jButton6.setText(simbolojogador);
            }
        });
        
        jButton7.addActionListener(new java.awt.event.ActionListener() {
            @Override
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                String simbolojogador;
                simbolojogador = fazerJogada(2,0);
                if( simbolojogador == null )return;
                jButton7.setText(simbolojogador);
            }
        });

        jButton8.addActionListener(new java.awt.event.ActionListener() {
            @Override
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                String simbolojogador;
                simbolojogador = fazerJogada(2,1);
                if( simbolojogador == null )return;
                jButton8.setText(simbolojogador);
            }
        });

        jButton9.addActionListener(new java.awt.event.ActionListener() {
            @Override
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                String simbolojogador;
                simbolojogador = fazerJogada(2,2);
                if( simbolojogador == null )return;
                jButton9.setText(simbolojogador);
            }
        });
        
        jFrame1.setLayout(new GridLayout(3,3));
        jFrame1.setMinimumSize(new Dimension(500, 500));
        jFrame1.add(jButton1);
        jFrame1.add(jButton2);
        jFrame1.add(jButton3);
        jFrame1.add(jButton4);
        jFrame1.add(jButton5);
        jFrame1.add(jButton6);
        jFrame1.add(jButton7);
        jFrame1.add(jButton8);
        jFrame1.add(jButton9);
        jFrame1.setVisible(true);
    }
    
}
